home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 001 / addsvp.arc / ADDSVP.BAS next >
BASIC Source File  |  1984-12-22  |  5KB  |  79 lines

  1. 100 DEFINT A-Z:FALSE=0:TRUE=NOT FALSE:XOFF$=CHR$(19):XON$=CHR$(17):BACK=8:PAUSE=FALSE:HOLD=FALSE:HALF=FALSE:RVIDEO=FALSE:ON ERROR GOTO 600
  2. 120 LOGMODE=FALSE:MONMODE=FALSE:RT$=CHR$(16):LT$=CHR$(17)+"   ":BSP$=CHR$(8):UL$=CHR$(95):LOGCNT=0:CR$=CHR$(13):FF$=CHR$(12):COLOR 7,0:FG=7:BG=0:KEY OFF:WIDTH 80:SCREEN 0,0:CLS:KEY 1,"SCROLL ":KEY 2,""
  3. 150 KEY 3,"backsp":KEY 4,RT$+"NORM"+LT$:KEY 5,RT$+"FULL"+LT$:KEY 6,"":KEY 7,RT$+"CLS"+LT$:KEY 8,RT$+"WHT"+LT$:KEY 9,"break ":KEY 10,RT$+"DOS"+LT$:KEY(1) ON:KEY (2) ON:KEY (3)ON:KEY (7) ON:KEY(8) ON:KEY(9) ON:KEY(10)ON
  4. 180 ON KEY(1) GOSUB 1000:ON KEY(2) GOSUB 1030:ON KEY(3) GOSUB 1040:ON KEY (7) GOSUB 1100:ON KEY (8) GOSUB 1060:ON KEY (9) GOSUB 920:ON KEY(10) GOSUB 1270:KEY ON:KEY (4) ON:KEY(5) ON:KEY(6) ON
  5. 220 ON KEY(4) GOSUB 1110:ON KEY(5) GOSUB 1230:ON KEY(6) GOSUB 1250:LOCATE 1,5,1,2,10:PRINT"*** ADDS REG/VP EMULATOR ***";
  6. 240 LOCATE 3,5:INPUT"BAUD RATE (75,110,150,300,600,1200,1800,2400,4800,9600) ";SPEED$:IF SPEED$="" THEN 240
  7. 260 PARITY$="N":BITS$="8":STP$="1":COMFIL$="COM1:"+SPEED$+","+PARITY$+","+BITS$+","+STP$+",CS,DS,CD":OPEN COMFIL$ AS #1:WIDTH"LPT1:",255:OPEN"SCRN:" FOR OUTPUT AS #2:CFLG=0:CLS:LOCATE 1,1,1,2,10
  8. 340 B$=INKEY$:IF B$="" THEN 380
  9. 350 IF LEN(B$)>1 THEN IF ASC(MID$(B$,2,1))=3 THEN B$=CHR$(0) ELSE GOTO 340
  10. 360 IF B$=CHR$(8) THEN B$=CHR$(BACK)
  11. 370 PRINT #1,B$;:IF HALF AND NOT MONMODE THEN PRINT#2,B$;
  12. 380 IF EOF(1) THEN 340
  13. 390 IF LOC(1)>254 THEN PAUSE=TRUE:IF NOT HOLD THEN PRINT#1,XOFF$;
  14. 400 A$=INPUT$(LOC(1),#1):FOR I=1 TO LEN(A$):C$=CHR$(ASC(MID$(A$,I,1)) AND 127):C=ASC(C$):IF MONMODE THEN GOSUB 1130:GOTO 560
  15. 450 IF C<32 AND CFLG<5 THEN GOTO 750
  16. 460 IF CFLG=0 THEN GOTO 540
  17. 470 IF CFLG=1 AND C$<>"Y" THEN CFLG=0:GOTO 560
  18. 480 IF CFLG=1 AND C$="Y" THEN CFLG=2:GOTO 560
  19. 490 IF CFLG=2 THEN ROW=C-31:CFLG=3:GOTO 560
  20. 500 IF CFLG=3 THEN COL=C-31:GOTO 680
  21. 510 IF CFLG=5 THEN GOTO 900
  22. 520 IF CFLG=6 THEN GOTO 860
  23. 530 CFLG=0
  24. 540 IF C<>0 AND C<>127 THEN PRINT C$;
  25. 550 IF C<>0 AND C<>127 AND LOGMODE THEN LPRINT C$;:LOGCNT=LOGCNT+1:IF C$<>CR$ THEN GOSUB 1210 ELSE LOGCNT=0
  26. 560 NEXT I:IF LOC(1)>0 THEN 340
  27. 580 IF PAUSE THEN PAUSE=FALSE:IF NOT HOLD THEN PRINT#1,XON$;
  28. 590 GOTO 340
  29. 600 IF ERR=68 THEN GOTO 660 ELSE VP=CSRLIN:HP=POS(0):LOCATE 24,1
  30. 610 IF ERR=57 THEN EMSG$="UART OVERRUN, FRAMING, BREAK, OR PARITY ERROR"
  31. 620 IF ERR=69 THEN EMSG$="COM1: BUFFER OVERFLOW"
  32. 630 IF ERR<>57 AND ERR<>69 THEN EMSG$="BASIC ERROR"+STR$(ERR)+" IN LINE"+STR$(ERL)
  33. 640 PRINT"*** "+EMSG$+" *** ";:SOUND 523,5:LOCATE VP,HP:IF ERR<>57 AND ERR<>69 THEN:SOUND 523,15:SOUND 32767,1:CLOSE:RESUME 100 ELSE RESUME NEXT
  34. 660 CLS:LOCATE 12,20:PRINT"*** DEVICE(S) COM1: AND/OR LPT1: NOT AVAILABLE ***":SOUND 880,36:STOP
  35. 680 IF ROW<1 THEN ROW=1 ELSE IF ROW>24 THEN ROW=24
  36. 690 IF COL<1 THEN COL=1 ELSE IF COL>80 THEN COL=80
  37. 700 IF CFLG=5 THEN LOCATE ROW:GOTO 730
  38. 710 IF CFLG=6 THEN LOCATE,COL:GOTO 730
  39. 720 LOCATE ROW,COL
  40. 730 CFLG=0:GOTO 560
  41. 750 CFLG=0:IF C=10 THEN GOTO 560
  42. 770 IF C=13 THEN GOTO 540
  43. 780 IF C=27 THEN CFLG=1:GOTO 560
  44. 790 IF C=11 THEN CFLG=5:GOTO 560
  45. 800 IF C=16 THEN CFLG=6:GOTO 560
  46. 810 IF C=7 THEN BEEP:GOTO 560
  47. 820 IF C=12 THEN CLS:IF LOGMODE THEN LPRINT FF$;:GOTO 560
  48. 830 IF C=8 AND POS(0)>1 THEN LOCATE,POS(0)-1
  49. 840 IF C=8 AND LOGMODE AND LOGCNT>0 THEN LPRINT BSP$;:LOGCNT=LOGCNT-1
  50. 850 GOTO 560
  51. 860 G=C\16:D=(C AND 15) MOD 10:COL=(G*10)+D+1:GOTO 680
  52. 900 ROW=(C AND 31)+1:GOTO 680
  53. 920 LCR=INP(&H3FB):LCR=LCR OR 64:OUT &H3FB,LCR:SOUND 32767,4:SOUND 130,1:LCR=LCR AND 191:OUT &H3FB,LCR:RETURN
  54. 1000 IF HOLD THEN KEY 1,"SCROLL " ELSE KEY 1,"HOLD"
  55. 1010 IF HOLD THEN PRINT#1,XON$;ELSE PRINT#1,XOFF$;
  56. 1020 HOLD=NOT HOLD
  57. 1030 RETURN
  58. 1040 IF BACK=8 THEN BACK=127:KEY 3,"delete" ELSE BACK=8:KEY 3,"backsp"
  59. 1050 RETURN
  60. 1060 IF RVIDEO THEN COLOR 7,0:FG=7:BG=0 ELSE COLOR 0,7:FG=0:BG=7
  61. 1070 RVIDEO=NOT RVIDEO:IF RVIDEO THEN KEY 8,RT$+"BLK"+LT$ ELSE KEY 8,RT$+"WHT"+LT$
  62. 1090 RETURN
  63. 1100 CLS:RETURN
  64. 1110 IF MONMODE THEN KEY 4,RT$+"NORM"+LT$:MONMODE=FALSE:CFLG=0:RETURN
  65. 1120 MONMODE=TRUE:KEY 4,RT$+"MON"+LT$:RETURN
  66. 1130 IF C=127 THEN C$=CHR$(177) '
  67. 1140 IF C<32 THEN COLOR BG,FG:PRINT CHR$(C+64);:COLOR FG,BG ELSE PRINT C$;
  68. 1150 IF NOT LOGMODE THEN RETURN
  69. 1160 PLOG$=CHR$(C):IF C<32 THEN PLOG$=CHR$(C+64)+BSP$+UL$+BSP$+UL$
  70. 1180 IF C=127 THEN PLOG$="H"+BSP$+"O"+BSP$+"X"+BSP$+"#"+BSP$+"*"
  71. 1190 LPRINT PLOG$;:LOGCNT=LOGCNT+1:GOSUB 1210:RETURN
  72. 1210 IF LOGCNT>=80 THEN LOGCNT=0:LPRINT CR$;
  73. 1220 RETURN
  74. 1230 IF HALF THEN HALF=FALSE:KEY 5,RT$+"FULL"+LT$ ELSE HALF=TRUE:KEY 5,RT$+"HALF"+LT$
  75. 1240 RETURN
  76. 1250 IF LOGMODE THEN LOGMODE=FALSE:KEY 6,"" ELSE LOGMODE=TRUE:KEY 6,RT$+"LPT"+LT$:LPRINT CR$;:LOGCNT=0
  77. 1260 RETURN
  78. 1270 CLS:END
  79.